// 类定义决定方法和属性,new 之后会直接执行构造函数
class Personn {
    constructor() {
        //可以在构造函数中直接用this来引用当前得对象
    }
    name = '张三'
    sayNo() {
        console.log('我想说话!');
    }
}
const per = new Personn();
console.log(per)
per.sayNo()

/**
 * 类中得代码都会在严格模式下运行
 * 严格模式下函数this不是window
 * 类中得方法this
 * 方法调用时this时当前实例
 * 函数调用this时undefind
 * 
 */
class Myclass {
    fn() {
        console.log('我是一年级得');
    }
}

const mc = new Myclass()
mc.fn()

//类的继承

class Dog {
    constructor(name, age) {
        this.name = name
        this.age = age
            /**\
             * 子类继承父类的所有方法
             * 
             */
    }
    sayHello = (text) => {
        console.log(this);
        console.log(text);
    }
}

class Snake extends Dog {
    constructor(name, age, len) {
        super(name, age)
        this.len = len ``
    }
}
const sankes = new Snake('大蛇丸', 12)
sankes.sayHello('嘶嘶')

// 静态属性和方法  类直接调用的方法,静态方法的this时当前的class

class Child {
    static name = '我是张三静态方法'
    static fn = () => {
        console.log(this);
    }
}
console.log(Child.name);
Child.fn()